package main

import (
	"fmt"
	"time"
)

/*
并发: 多个线程同时竞争一个位置，竞争到的才可以执行，每一个时间段只有一个线程在执行
并行: 多个线程可以同时执行，每一个时间段，可以有多个线程同时执行

goroutine: Go 语言的并发模型，是一种轻量级的线程，类似于线程的概念，但 goroutine 是运行在用户态的协程，可以很轻松地实现并发。
*/

func test() {
	for i := 0; i < 10; i++ {
		fmt.Println("test() 你好golang", i)
		time.Sleep(time.Microsecond * 500)
	}
}

func main() {
	 go test() // 表示开启协程
	// 主线程中每隔50毫秒输出一次
	for i := 0; i < 10; i++ {
		fmt.Println("main()  你好golang", i)
		time.Sleep(time.Microsecond * 50)
		// 主进程结束后无论协程是否结束，整个程序都会结束
	}
}